package com.example.nophase.api;

import com.example.nophase.common.BasePage;
import com.example.nophase.common.BaseResp;
import com.example.nophase.entity.A;
import com.example.nophase.entity.AdultItemDTO;
import com.example.nophase.entity.AdultMsgDTO;
import com.example.nophase.entity.ApplyForListDTO;
import com.example.nophase.entity.AreaListDto;
import com.example.nophase.entity.TyBusinessAppDto;
import com.example.nophase.entity.UserDTO;
import com.example.nophase.entity.HistoryVo;
import com.example.nophase.entity.InstructionsDTO;
import com.example.nophase.entity.InstructionsSuccessDTO;
import com.example.nophase.entity.Money;
import com.example.nophase.entity.Project;
import com.example.nophase.entity.ProjectDTO;
import com.example.nophase.entity.ProjectDetailDTO;
import com.example.nophase.entity.RecordsDTO;
import com.example.nophase.entity.TokenVO;
import com.example.nophase.entity.UpdatePassword;
import com.example.nophase.entity.Version;

import java.util.List;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;

public interface RequstCommonApi {
    /**
     * 登录
     */

    @POST("public/tyPhoneLogin")
    Call<TokenVO> appLogin(@Query("account") String account, @Query("password") String password);

    //版本号
    @GET("public/ty_app_version/{id}")
    Call<BaseResp<Version>> loadAppVesion(@Header("Client-Type") String apikey, @Path("id") int id);
    /**
     * @param uuid
     * @return
     * 获取本人提交的申请
     */
    //*
    @GET("api/ty_business_app/findByUuid")
    Call<BaseResp<BasePage<ApplyForListDTO>>> loadApplyforList(@Query("uuid") String uuid, @Query("status") String status, @Query("size")int size, @Query("page") int page);

    @GET("api/ty_business_app/deleteProcessAndTicketByid")
    Call<BaseResp<Object>>deleteApplyFor(@Query("id")int id);
    /**
     * 获取代办审批列表
     * @param uuid
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @GET("public/activiti/task")
    Call<BaseResp<List<AdultItemDTO>>> loadAdultList(@Header("Client-Type") String apikey,@Query("userUuid") String uuid);

    /**
     * 提交申请
     * @param dto
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @POST("api/ty_business_app/startapp")
    Call<BaseResp<Object>>saveAppForDetail(@Header("Client-Type") String apikey,@Body ProjectDTO dto);


    /**
     *
     * @param apikey
     * @param dto
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @POST("api/ty_business_app/reapply")
    Call<BaseResp<Object>> updateApplyForFetail(@Header("Client-Type") String apikey,@Body ProjectDTO dto);

    /**
     * 获取财务人员列表
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @GET("api/oa_sys_user/getFinalcialList")
    Call<BaseResp<List<UserDTO>>> loadfinancial(@Header("Client-Type") String apikey);

    /**
     * 获取工资组人员列表
     * @param apikey
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @GET("api/oa_sys_user/getALLGZZAccounts")
    Call<BaseResp<List<UserDTO>>> loadWageGroup(@Header("Client-Type") String apikey);

    /**
     * 获取待审批工单详情
     * @param id
     * @return
     */
    //*
    @Headers("Client-Type:ANDROID")
    @GET("api/ty_business_app_dto")
    Call<BaseResp<AdultMsgDTO<ProjectDetailDTO>>> loadTaskFrom(@Header("Client-Type") String apikey,@Query("id") int id);

    /**
     * 提交审批信息
     * @param dto
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @POST("api/ty_business_app/commonaudit")
    Call<BaseResp<Object>>saveAdult(@Header("Client-Type") String apikey,@Body AdultMsgDTO dto);

    /**
     * 财务审批接口
     * @param apikey
     * @param dto
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @POST("api/ty_business_app/modifyStatusNew")
    Call<BaseResp<Object>>saveFinanceAdult(@Header("Client-Type") String apikey,@Body AdultMsgDTO dto);

    /**
     *
     * 获取上一审批人的审核信息
     * @param mintakid
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @GET("public/activiti/historymsg")
    Call<BaseResp<List<HistoryVo>>>lodaAdultMsg(@Header("Client-Type") String apikey,@Query("processid")String mintakid);

    /**
     * 获取财务待批付工单
     * @param finanlstatus
     * @param size
     * @param page
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @GET("api/tyBusinessFinished")
    Call<BaseResp<InstructionsSuccessDTO<InstructionsDTO>>>loadFinance(@Header("Client-Type") String apikey,@Query("finalstatus")String finanlstatus, @Query("size")int size, @Query("page") int page);

    /**
     * 批量批付
     * @param
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @POST("api/ty_business_app/modifyStatus")
    Call<BaseResp<Object>> saveInstructions(@Header("Client-Type") String apikey,@Body A dto);

    /**
     * 工资组待审核列表
     * @param size
     * @param page
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @GET("api/GZZAppTickect")
    Call<BaseResp<RecordsDTO<InstructionsDTO>>> lodaAdultAwait(@Header("Client-Type") String apikey,@Query("size")int size, @Query("page") int page);

    /**
     * 工资组审核完成列表
     * @param size
     * @param page
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @GET("api/GZZAuditedTickect")
    Call<BaseResp<RecordsDTO<InstructionsDTO>>> lodaAdultComplete (@Header("Client-Type") String apikey,@Query("size")int size, @Query("page") int page);


//    /api/CWAPPTickect

    /**
     * 财务已批付列表
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @GET("api/CWFinishedTickect")
    Call<BaseResp<RecordsDTO<InstructionsDTO>>> loadBatchOfPayComplete (@Header("Client-Type") String apikey,@Query("size")int size, @Query("page") int page);


    /**
     * 获取财务没有批付的工单
     * @param size
     * @param page
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @GET("api/CWAPPTickect")
    Call<BaseResp<RecordsDTO<InstructionsDTO>>> loadBatchOfPayno (@Header("Client-Type") String apikey,@Query("size")int size, @Query("page") int page);
    @Headers("Client-Type:ANDROID")
    @POST("api/CWAPPTickect")
    Call<BaseResp<Object>> updateFinanceAudlt(@Header("Client-Type") String apikey,@Body AdultMsgDTO dto);
    /**
     * 获取区域列表
     * @param apikey
     * @param ids
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @GET("api/mysys_tree/buildUserTree")
    Call<BaseResp<List<AreaListDto>>> loadArceList(@Header("Client-Type") String apikey, @Query("userTressids")String ids);

    /**
     * 修改密码
     * @param apikey
     * @param dao
     * @return
     */
    @Headers("Client-Type:ANDROID")
    @POST("api/sys_user/modifyPassBySelf")
    Call<BaseResp<Object>> updataPassword(@Header("Client-Type") String apikey, @Body UpdatePassword dao);

    /**
     * 获取区域下的项目
     * @param apikey
     * @param id
     * @param name
     * @return
     */
    @GET("api/ty_proinfo/getRegionProjects")
    Call<BaseResp<List<Project>>> loadAreaProject(@Header("Client-Type") String apikey, @Query("treeid")int id, @Query("treename") String name);

    /**
     * 获取当前区域的限额，累计金额，批付金额
     * @param apikey
     * @param areaId
     * @param areaName
     * @return
     */
    @GET("api/ty_business_app/regionMoney")
    Call<BaseResp<Money>> loadMomey(@Header("Client-Type") String apikey, @Query("regionId")int areaId, @Query("regionName") String areaName);
}
